#include "TCPserver.hpp"


void timeSendToServer(ThreadSafeQueue<std::string> & sendQueue){
    /**
    * @brief 定时向服务器要发送的数据队列中存入数据
    * @param sendQueue 要发送的数据队列
    */
    while (true) {
        std::string message = "从服务端发送的数据到客户端";
        sendQueue.push(message);  // 将消息推送到发送队列
        std::this_thread::sleep_for(std::chrono::seconds(3));  // 休眠2秒
    }
}

void printReceivedMessage(ThreadSafeQueue<std::string> & receiveQueue) {
    /**
     * @brief 打印接收到的消息
     * @param receiveQueue 接收到的消息队列

     **/
    while (true) {
        std::string message = receiveQueue.pop();  // 从接收队列中取出消息
        std::cout << "接收到来自客户端的消息：" << message << std::endl;
    }
}

int main() {
    ThreadSafeQueue<std::string> receiveQueue;  // 接收数据的队列
    ThreadSafeQueue<std::string> sendQueue;     // 发送数据的队列

    Server server(8080, receiveQueue, sendQueue);

    std::thread send_thread(timeSendToServer, std::ref(sendQueue));  // 定时发送数据到服务器
    std::thread receive_thread(printReceivedMessage, std::ref(receiveQueue));  // 打印接收到的消息
    if (server.start()) {
        // 启动服务器，接受客户端连接并处理
        std::thread server_thread(&Server::acceptConnections, &server);

        server_thread.join();
    }
    send_thread.join();
    receive_thread.join();
    return 0;
}